package com.kelvem.saas.workbanch.core.manager.dto;

import com.kelvem.saas.workbanch.core.manager.model.BizPageEntity;
import lombok.Data;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单Dto
 *
 * @author kelvem
 * @version 1.0
 */
@Data
@ToString(callSuper = true)
public class MenuDto {

    public MenuDto() {

    }
    public MenuDto(String menuName) {
        this.setPath("/" + menuName);
        this.setTitle(menuName);
    }

    // id
    private Long id;

    // route路径
    private String path;

    // 菜单名
    private String title;

    // route参数
    private String query;

    // icon
    private String icon;

    // affix
    private Boolean affix = false;

    // 子菜单
    private List<MenuDto> children = new ArrayList<>();

    /**
     * convert
     *
     * @param bizPage 页面(菜单)数据
     * @return 菜单dto
     */
    public static MenuDto convert(BizPageEntity bizPage) {
        MenuDto menuDto = new MenuDto();
        menuDto.setTitle(bizPage.getMenu2());
        menuDto.setId(bizPage.getId());
        if (bizPage.getIcon() != null && !bizPage.getIcon().trim().isEmpty()) {
            menuDto.setIcon(bizPage.getIcon());
        } else {
            menuDto.setIcon("el-icon-menu");
        }
        if ("meta".equalsIgnoreCase(bizPage.getPageType())) {
            menuDto.setPath("/metadata/view/PanelMetaView");
            menuDto.setQuery("?metaTableId=" + bizPage.getMetaTableId() + "&bizPageId=" + bizPage.getId());
        } else {
            menuDto.setPath(bizPage.getUrlPath());
            menuDto.setQuery(bizPage.getUrlQuery());
        }
        return menuDto;
    }

}
